package com.liuxing.doctor.mapper;

import com.liuxing.doctor.entity.Patient;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface PatientMapper {
    int deleteByPrimaryKey(String patientId);

    int insert(Patient record);

    int insertSelective(Patient record);

    Patient selectByPrimaryKey(String patientId);

    int updateByPrimaryKeySelective(Patient record);

    int updateByPrimaryKey(Patient record);

    /**
     * 根据医生id查询其所属病人
     * @param id 医生的id标识
     * @return
     */
    List<Patient> selectAllPatients(String id);

    /**
     * 根据病人id查询
     * @param id
     * @return
     */
    Patient selectPatientById(@Param("patientId") String id);

    /**
     * 根据search_name和医生id查询所属已经诊断病人
     * @param search_name
     * @param id  医生的id标识
     * @return
     */
    List<Patient> selectPatientBySearchNameWithDoneDiagnosis(String search_name,String id);
    /**
     * 根据search_name和医生id查询所属未诊断病人
     * @param search_name
     * @return
     */
    List<Patient> selectPatientBySearchNameWithNoDoneDiagnosis(String search_name);

    /**
     * 更新病人的信息
     * @param map
     * @return
     */
    int updatePatient(Map<String,Object> map);

    /**
     * 删除病人
     * @param patient_id
     * @return
     */
    int deletePatient(String patient_id);

    /**
     * 查询当前医生已经诊断的病人
     * @param id 医生id的标识
     * @return
     */
    List<Patient> selectAllPatientWithMedicalRecordIdNotNull(String id);
    /**
     * 查询没有诊断的病人
     * @param
     * @return
     */
    List<Patient> selectAllPatientWithMedicalRecordIdNull();

    List<Patient> selectAllPatientWithMedicalNotNull();

    int insertOnePatient(Patient patient);
}